package br.unicamp.ic.inf300.arena.modelo.logistico;
/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * ConjuntoAssento.java
 */

import java.util.Collection;

public class ConjuntoAssento {

	private int codConjuntoAssento;
	private int qtdAssentos;
	private double percentualAcrescimo;

	private Collection<AssentoCategorizado> assentos;

	//private CategoriaAssento categoriaAssento;
	
	private SalaConfiguravel salaConfiguravel;

	public ConjuntoAssento() {
		super();
	}

	/**
	 * 
	 * @param codConjuntoAssento
	 * @param qtdAssentos
	 * @param percentualAcrescimo
	 * @param assentos
	 * @param salaConfiguravel
	 */
	public ConjuntoAssento(int codConjuntoAssento, int qtdAssentos, double percentualAcrescimo, Collection<AssentoCategorizado> assentos, SalaConfiguravel salaConfiguravel) {
		super();
		this.codConjuntoAssento = codConjuntoAssento;
		this.qtdAssentos = qtdAssentos;
		this.percentualAcrescimo = percentualAcrescimo;
		this.assentos = assentos;
		this.salaConfiguravel = salaConfiguravel;
	}

	/**
	 * @return  the assentos
	 * @uml.property  name="assentos"
	 */
	public Collection<AssentoCategorizado> getAssentos() {
		return this.assentos;
	}

	public void setAssentos(Collection<AssentoCategorizado> assentos) {
		this.assentos = assentos;
	}	

	/*
	public CategoriaAssento getCategoriaAssento() {
		return categoriaAssento;
	}

	public void setCategoriaAssento(CategoriaAssento categoriaAssento) {
		this.categoriaAssento = categoriaAssento;
	}
	*/

	public int getQtdAssentos() {
		return qtdAssentos;
	}

	public void setQtdAssentos(int qtdAssentos) {
		this.qtdAssentos = qtdAssentos;
	}

	public SalaConfiguravel getSalaConfiguravel() {
		return salaConfiguravel;
	}

	public void setSalaConfiguravel(SalaConfiguravel salaConfiguravel) {
		this.salaConfiguravel = salaConfiguravel;
	}

	public int getCodConjuntoAssento() {
		return codConjuntoAssento;
	}

	public void setCodConjuntoAssento(int codConjuntoAssento) {
		this.codConjuntoAssento = codConjuntoAssento;
	}

	public double getPercentualAcrescimo() {
		return percentualAcrescimo;
	}

	public void setPercentualAcrescimo(double percentualAcrescimo) {
		this.percentualAcrescimo = percentualAcrescimo;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("ConjuntoAssento ( ")
	        .append(super.toString()).append(TAB)
	        .append("assentos = ").append(this.assentos).append(TAB)
	        .append("codConjuntoAssento = ").append(this.codConjuntoAssento).append(TAB)
	        .append("percentualAcrescimo = ").append(this.percentualAcrescimo).append(TAB)
	        .append("qtdAssentos = ").append(this.qtdAssentos).append(TAB)
	        .append("salaConfiguravel = ").append(this.salaConfiguravel).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((assentos == null) ? 0 : assentos.hashCode());
		result = prime * result + codConjuntoAssento;
		long temp;
		temp = Double.doubleToLongBits(percentualAcrescimo);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		result = prime * result + qtdAssentos;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final ConjuntoAssento other = (ConjuntoAssento) obj;
		if (assentos == null) {
			if (other.assentos != null)
				return false;
		} else if (!assentos.equals(other.assentos))
			return false;
		if (codConjuntoAssento != other.codConjuntoAssento)
			return false;
		if (Double.doubleToLongBits(percentualAcrescimo) != Double
				.doubleToLongBits(other.percentualAcrescimo))
			return false;
		if (qtdAssentos != other.qtdAssentos)
			return false;
		return true;
	}
}